home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / ruth.arc / RUTHSCAT.BAS (.txt) < prev   
Encoding:
GW-BASIC  |  1980-01-01  |  2.9 KB  |  124 lines

  1. 1  SCREEN 0:KEY OFF:CLS:WIDTH 40
  2. 2  LOCATE 7,1:PRINT"          RUTHERFORD SCATTERING":PRINT:PRINT
  3. 5  PRINT:PRINT"          David J Wilson"
  4. 6  PRINT"          Department of Chemistry"
  5. 7  PRINT"          Vanderbilt University"
  6. 8  FOR I=1 TO 3000:NEXT I:CLS
  7. 10  LOCATE 3,1:PRINT"     This program calculates and plots"
  8. 11  PRINT"the trajectories of alpha particles"
  9. 12  PRINT"(charge +2, mass number 4) colliding"
  10. 13  PRINT"with the nucleus of a gold atom (charge"
  11. 14  PRINT"+79, mass number 197)."
  12. 15  FOR I=1 TO 5000:NEXT I
  13. 16  DIM U(4,4),X(4,4),DX(2,4),DU(2,4)
  14. 17  M1=1:M2=49.25
  15. 25  G=-0.1
  16. 26  G=G*M1*M2
  17. 30  TL=0:TU=10:DT=0.2
  18. 45  X(1,1)=0
  19. 46  PRINT
  20. 50  X(1,2)=14
  21. 51  PRINT"The impact parameter of the collision"
  22. 52  PRINT"is the distance of closest approach"
  23. 53  PRINT"of the alpha particle to the nucleus if"
  24. 54  PRINT"there were no repulsive force between"
  25. 55  PRINT"them, so that the alpha particle moved"
  26. 56  PRINT"in a straight line past the nucleus."
  27. 57  PRINT:PRINT"  Select an impact parameter between":PRINT"+ 4 and - 4.  (+4 gives a wide miss;":PRINT"+ 1 gives a very near miss;":PRINT"0 gives a head-on collision.)"
  28. 58  INPUT"Impact parameter = ",X(1,3)
  29. 60  X(1,4)=0
  30. 65  U(1,1)=3
  31. 70  U(1,2)=0
  32. 75  U(1,3)=0
  33. 80  U(1,4)=0
  34. 83  SCREEN 1
  35. 84  LINE (0,0)-(0,199):LINE-(319,199):LINE-(319,0):LINE-(0,0)
  36. 85  T2=2*DT:T5=0.5*DT
  37. 95  K1=G/M1:K2=G/M2
  38. 96  K3=K2/K1
  39. 100  T=TL-DT
  40. 105  NT=(TU-TL)/DT
  41. 110  T=T+DT
  42. 115  K=1
  43. 120  L=1
  44. 125  GOSUB 5000
  45. 130  FOR I=1 TO 4
  46. 135  X(2,I)=X(1,I)+DT*DX(1,I)
  47. 140  U(2,I)=U(1,I)+DT*DU(1,I)
  48. 145  NEXT I
  49. 150  K=2:L=2
  50. 155  GOSUB 5000
  51. 160  FOR I=1 TO 4
  52. 165  X(2,I)=X(1,I)+T5*(DX(1,I)+DX(2,I))
  53. 170  U(2,I)=U(1,I)+T5*(DU(1,I)+DU(2,I))
  54. 175  NEXT I
  55. 200  FOR N=2 TO NT
  56. 205  T=T+DT
  57. 210  L=1:K=2
  58. 215  GOSUB 5000
  59. 220  FOR I=1 TO 4
  60. 225  X(3,I)=X(1,I)+T2*DX(1,I)
  61. 230  U(3,I)=U(1,I)+T2*DU(1,I)
  62. 235  NEXT I
  63. 240  L=2:K=3
  64. 245  GOSUB 5000
  65. 250  FOR I=1 TO 4
  66. 255  X(4,I)=X(2,I)+T5*(DX(1,I)+DX(2,I))
  67. 260  U(4,I)=U(2,I)+T5*(DU(1,I)+DU(2,I))
  68. 265  NEXT I
  69. 266  L=2:K=4:GOSUB 5000
  70. 267  FOR I=1 TO 4
  71. 268  X(4,I)=X(2,I)+T5*(DX(1,I)+DX(2,I))
  72. 269  U(4,I)=U(2,I)+T5*(DU(1,I)+DU(2,I))
  73. 270  NEXT I
  74. 271  FOR I=1 TO 4
  75. 275  X(1,I)=X(2,I)
  76. 280  X(2,I)=X(4,I)
  77. 285  U(1,I)=U(2,I)
  78. 290  U(2,I)=U(4,I)
  79. 295  NEXT I
  80. 318  GOSUB 4000
  81. 320  NEXT N
  82. 325  LOCATE 22,1:PRINT"                                       ":PRINT"                                       "
  83. 327  LOCATE 22,1
  84. 330  PRINT"     Run complete."
  85. 331  PRINT"Enter R for another run."
  86. 332  A$=INKEY$:IF A$="" THEN GOTO 332
  87. 335  IF A$="R" OR    A$="r" THEN GOTO 340
  88. 337  CLS:SCREEN 0:LOCATE 1,1:END
  89. 340  LOCATE 22,1:PRINT"New impact parameter (>-6 and <+6) = ";
  90. 341  INPUT"",X(1,3)
  91. 342  X(1,1)=0
  92. 343  X(1,2)=14
  93. 344  X(1,4)=0
  94. 345  U(1,1)=3
  95. 346  U(1,2)=0
  96. 347  U(1,3)=0
  97. 348  U(1,4)=0
  98. 349  GOTO 100
  99. 4000  REM plotting subroutine
  100. 4005  X1=INT(10*X(2,1))
  101. 4010  X2=INT(10*X(2,2))
  102. 4015  Y1=99-INT(10*X(2,3))
  103. 4020  Y2=99-INT(10*X(2,4))
  104. 4021  IF(X1<0 OR Y1<0) THEN GOTO 4026
  105. 4022  IF X1>639 THEN GOTO 4026
  106. 4023  IF Y1>199 THEN GOTO 4026
  107. 4025  PSET (X1,Y1)
  108. 4026  IF X2<0 OR Y2<0 THEN GOTO 4035
  109. 4027  IF X2>639 THEN GOTO 4035
  110. 4028  IF Y2>199 THEN GOTO 4035
  111. 4030  PSET (X2,Y2)
  112. 4035  RETURN
  113. 5000  R=(X(K,2)-X(K,1))^2+(X(K,4)-X(K,3))^2
  114. 5010  R=R^1.5
  115. 5020  DX(L,1)=U(K,1)
  116. 5025  DX(L,2)=U(K,2)
  117. 5030  DX(L,3)=U(K,3)
  118. 5035  DX(L,4)=U(K,4)
  119. 5040  DU(L,1)=K1*(X(K,2)-X(K,1))/R
  120. 5045  DU(L,2)=-K3*DU(L,1)
  121. 5050  DU(L,3)=K1*(X(K,4)-X(K,3))/R
  122. 5055  DU(L,4)=-K3*DU(L,3)
  123. 5060  RETURN
  124.